Del iterativo al recursivo: la reconstrucción del pensamiento
La recursión (Recursion) es un enfoque que cambia fundamentalmente la perspectiva para resolver problemas. Al tratar problemas como la suma de listas,el método iterativo(Listado de código 4-2) depende de un acumulador explícito theSum y el control del estado del bucle; mientras que el método recursivo se basa en una definición matemática profunda:
$$listsum(numList) = first(numList) + listsum(rest(numList))$$
La recursión no solo consiste en una función que se llama a sí misma, sino que descompone un problema complejo en subproblemas más pequeños con la misma estructura. Su núcleo radica en identificar laauto-similitud. La ejecución recursiva incluye dos fases simétricas:
- Fase de "descenso": cortar repetidamente la lista y empujarla a la pila de llamadas hasta alcanzar un caso base que se puede resolver.caso base(caso base).
- Fase de "retorno": comenzar desde el estado más simple, regresar paso a paso y combinar los resultados.
Intuición clave
El pensamiento iterativo es como tomar un cubo y añadir uno por uno los números; el pensamiento recursivo es decir: "si me dices cuánto suman los números restantes, yo solo necesito agregar el primero".